Modern computer systems include at least one processor for processing computer instructions and a memory system that stores the computer instructions. The main memory of a typical computer memory system is generally implemented with some form of Dynamic Random Access Memory (DRAM). DRAM devices have a very high memory density (amount of data stored per area of integrated circuit used), low power usage, and a relatively inexpensive cost per data bit.
The speed at which computer processors operate has been continually increasing. Specifically, decreasing the size of the semiconductor transistors and decreasing the operating voltages of these transistors has allowed processor clocks to run at faster rates. In addition, the amount of data processed with each computer instruction has been increasing. The increased processing power has allowed high-speed three-dimensional processing to become inexpensive, very high-speed digital network routers to be constructed, and other computer application advances. These increasingly fast processors have greatly increased the demands that a processor puts on a memory system. Unfortunately, improvements to the performance of the computer memory devices that provide instructions and have not kept pace with the increasingly faster processors. Thus, the memory systems have become a bottleneck for computer performance.
Various different techniques have been used to increase the performance of memory systems in attempts to keep up with the demands of modern processors. Memory system parallelism is used to improve memory system speed by fetching large blocks of memory at a time such that individual instructions within the same fetched block may be quickly fed to a fast processor. Memory interleaving improves performance by using parallelism and hiding the effects of memory refresh operations.
The most well known technique for memory system performance is the use of cache memory systems. Cache memory systems improve memory system performance by duplicating sections of a main memory system in a smaller-speed memory system (the ‘cache memory’). As long as a needed instruction or data item is represented within the cache memory system (a cache ‘hit’), that instruction or data item can be quickly provided to the processor. However, when a needed instruction or data item is not represented within the cache memory system (a cache ‘miss’), that instruction or data item must be fetched from the slower main memory system. Since cache misses will always occur, standard cache memory systems only provide a performance increase on a statistical average basis. However, each individual memory access may be slow due a cache miss.
Another feature often demanded from modern memory systems is ability to handle more than one memory operation at a time. For example, a system may wish to be able to issue both a read request and write request to a memory system at the same time. Due to the increasing demands put upon memory systems, advances in memory system design have been needed.